﻿/// <reference path="../../Plugins/jquery-1.10.2.min.js" />
/// <reference path="../DataService.js" />
/// <reference path="../../Plugins/jquery.form.min.js" />

$(document).ready(function () {
    $('#navbar-left li').each(function () {
        $(this).removeClass('active');
        if ($(this).find('i').hasClass('fa-table')) {
            $(this).addClass('active');
        }
    })
})

function AdminListCategory(total) {

    //Private fileds
    var _total = total;
    var _baseUrl = '/api/ApiLibDocuments/GetData';

    var _dataService = new DataService();

    //as
    this.Init = function () {
        //Paging();
        DelegateEvent();
    };

    //private function
    function Paging() {
        var totalPages = (_total < pageSize) ? 1 : (Math.floor(_total / _pageSize) + 1);
        if (_total > 0) {
            var options = {
                bootstrapMajorVersion: 3,
                currentPage: _pageIndex,
                totalPages: totalPages,
                size: 'normal',
                useBootstrapTooltip: true,
                tooltipTitles: function (type, page, current) {
                    switch (type) {
                        case "first":
                            return "Về trang đầu";
                        case "prev":
                            return "Trang trước";
                        case "next":
                            return "Trang tiếp";
                        case "last":
                            return "Về trang cuối";
                        case "page":
                            return "Trang " + page;
                    }
                },
                onPageClicked: function (e, originalEvent, type, page) {
                    var url = _baseUrl + '?index=' + page + '&size=' + _pageSize + '&order=' + _order;

                    _dataService.Get(url, successCallback);
                }
            };
            $('#paging').bootstrapPaginator(options);
        }
    }

    function successCallback(data, textStatus, jqXHR) {
        InsertDocumentItem(data);
        if (data.total != _total) {
            var newTotal = (data.total < pageSize) ? 1 : Math.floor(data.total / _pageSize);
            var newOptions = {
                totalPages: newTotal
            };
            $('#paging').bootstrapPaginator(newOptions);
        }
    }

    function InsertDocumentItem(data) {
        if (!data) {
            return;
        }
        $('#tableData>tbody').empty();
        for (var i = 0; i < data.data.length; i++) {
            var html = '<tr>' +
                            '<td>' + (i + 1).toString() + '</td>' +
                            '<td>' + ((data.data[i].CategoryName != null) ? data.data[i].CategoryName : '') + '</td>' +
                            '<td>' +
                                '<button class="btn btn-default btn-xs table-action" value="' + ((data.data[i].CategoryId != null) ? data.data[i].DocumentId : '#') + '"><i class="fa fa-info-circle"></i></button>' +
                                '<button class="btn btn-default btn-xs table-action" value="' + ((data.data[i].CategoryId != null) ? data.data[i].DocumentId : '#') + '"><i class="fa fa-trash-o"></i></button>' +
                            '</td>' +
                       '</tr>';
            $('#tableData>tbody').append(html);
        }
    }

    function DelegateEvent() {
        //Edit
        $('#tableData>tbody').delegate('td>button', 'click', function (e) {
            e.preventDefault();
            var self = $(this);
            var pos = self.closest('tr').index();
            if (pos != null) {
                if (self.find('i').hasClass('fa-info-circle')) {
                    //Set data to modal
                    _dataService.Get('/api/ApiLibCategories/GetById?categoryId=' + self.attr('value'), function (data, textStatus, jqXHR) {
                        //console.log(data.data);
                        $('#mcategoryName').val(data.data.CategoryName);
                        $('#mcategoryId').val(data.data.CategoryId);
                    });

                    $('#myModalFooter .btn-primary').attr('value', 'edit');
                    $('#myModalLabel').text('CategoryId: ' + self.attr('value'));
                    $('#myModal').modal('show');
                }
                else if (self.find('i').hasClass('fa-trash-o')) {
                    var categoryId = self.attr('value');
                    if (confirm('Xóa danh mục này cần phải xóa các dữ liệu liên quan: danh sách tài liệu, file upload.\n\nTiếp tục xóa danh mục tài liệu này ?')) {
                        _dataService.Get('/api/ApiLibDocuments/GetByCategory?categoryId=' + categoryId, function (data, textStatus, jqXHR) {
                            if (data.total > 0) {
                                alert('Danh mục này vẫn chứa ' + data.total + ' tài liệu.\nPhải xóa toàn bộ tài liệu trước.');
                            }
                            else {
                                _dataService.Post('/api/ApiLibCategories/DeleteData?CategoryId=' + categoryId, null, function (data, textStatus, jqXHR) {
                                    if (data.success == true) {
                                        self.closest('tr').remove();
                                    }
                                });
                            }
                        });
                    }
                }
            }
        });

        //Addnew
        $('#addNew').click(function () {
            $('#mcategoryName').val('');
            $('#mcategoryId').val('');
            $('#myModalFooter>.btn-primary').attr('value', 'addnew');
            $('#myModalLabel').text('Thêm mới danh mục tài liệu');
            $('#myModal').modal('show');
        });

        //Save
        $('#myModalFooter .btn-primary').click(function () {
            var self = $(this);
            if (self.attr('value') == 'addnew') {
                var data = {
                    CategoryName: ($('#mcategoryName').val() == '' ? null : $('#mcategoryName').val())
                };
                _dataService.Post('/api/ApiLibCategories/CreateData', data, function (data, textStatus, jqXHR) {
                    window.location.reload();
                });
            }
            else if (self.attr('value') == 'edit') {
                var data = {
                    CategoryId: ($('#mcategoryId').val() == '' ? null : $('#mcategoryId').val()),
                    CategoryName: ($('#mcategoryName').val() == '' ? null : $('#mcategoryName').val())
                };

                _dataService.Post('/api/ApiLibCategories/UpdateData', data, function (data, textStatus, jqXHR) {
                    window.location.reload();
                });
            }
        });
    }

    //function ResetModalControl() {
    //    $('#myModal.modal-body')
    //}
}